﻿// -----------------------------------------------------------------------
// <copyright file="BackupOptions.cs" company="JSC Centido">
//  Copyright (c) JSC Centido. All rights reserved.
// </copyright>
// -----------------------------------------------------------------------

using System;

namespace Centido.Core
{
    /// <summary>
    ///   The components that form a domain.
    /// </summary>
    [Flags]
    public enum DomainComponents
    {
        /// <summary>
        ///   None of the domain components.
        /// </summary>
        None = 0,
        /// <summary>
        ///   Schema metadata.
        /// </summary>
        Schema = 1,
        /// <summary>
        ///   Units.
        /// </summary>
        Units = 2,
        /// <summary>
        ///   Roles.
        /// </summary>
        Roles = 4,
        /// <summary>
        ///   Users.
        /// </summary>
        Users = 8,
        /// <summary>
        ///   Table permissions.
        /// </summary>
        TablePermissions = 16,
        /// <summary>
        ///   Row system columns.
        /// </summary>
        SystemColumns = 32,
        /// <summary>
        ///   Table data.
        /// </summary>
        Rows = 64,
        /// <summary>
        ///   Deleted table data.
        /// </summary>
        DeletedRows = 128,
        /// <summary>
        ///   Domain options.
        /// </summary>
        DomainOptions = 256,
        /// <summary>
        ///   Security settings.
        /// </summary>
        Security = Units | Roles | Users | TablePermissions,
        /// <summary>
        ///   All table data.
        /// </summary>
        Data = SystemColumns | Rows | DeletedRows,
        /// <summary>
        ///  All metadata.
        /// </summary>
        Metadata = Schema | Security | DomainOptions,
        /// <summary>
        ///   All in the backup.
        /// </summary>
        All = Metadata | Data
    }
}
